#pragma once
#ifndef _DEFINES_H
#define _DEFINES_H

#define LU_TRUE 1
#define LU_FALSE 0

#define MAX_PLAYERS 128
#define MAX_NAME_LEN 64

#define BODYPART_BODY 0
#define BODYPART_HEAD 6
#define BODYPART_TORSO 1 // ?
#define BODYPART_LEFTARM 2
#define BODYPART_RIGHTARM 3
#define BODYPART_LEFTLEG 4
#define BODYPART_RIGHTLEG 5

#define MAX_VEHICLES 5000
#define MAX_OBJECTS 5000
#define MAX_PICKUPS 5000
#define MAX_CHECKPOINTS 250
#define MAX_CLIENTCHECKPOINTS 100
#define MAX_SPHERES 250
#define MAX_CLIENTSPHERES 100
#define MAX_SPAWNCLASSES 150
#define MAX_SPAWNCLASS_WEAPONS 12
#define MAX_SOUNDS 1000
#define MAX_SPRITES 1000

#define PORTLAND_HIDEOUT_GARAGE 1
#define PORTLAND_IE_GARAGE 2
#define PORTLAND_BOMBSHOP_GARAGE 3
#define PORTLAND_PAYNSPRAY_GARAGE 4
#define SALVATORES_GARAGE 5
#define SECURICAR_GARAGE 6
#define LUIGIS_LOCKUP_GARAGE 7
#define STAUNTON_HIDEOUT_GARAGE 8
#define STAUNTON_BOMSHOP_GARAGE 9
#define STAUNTON_BOMBSHOP_GARAGE 9
#define STAUNTON_PAYNSPRAY_GARAGE 10
#define RAY_LOCKUP_GARAGE 11
#define WITSEC_HOUSE_GARAGE 12
#define KENJI_LOCKUP_GARAGE 13
#define COLUMBIAN_GARAGE_1 14
#define COLUMBIAN_GARAGE_2 15
#define COLUMBIAN_GARAGE_3 16
#define COLUMBIAN_GARAGE_4 17
#define COLUMBIAN_GARAGE_5 18
#define YARDIE_LOCKUP_GARAGE 19
#define SHORESIDE_HIDEOUT_GARAGE 20
#define SSV_PAYNSPRAY_GARAGE 21
#define SSV_BOMBSHOP_GARAGE 22
#define SHORESIDE_IE_GARAGE 23
#define HOODS_DEFUSAL_GARAGE 24
#define PLATINUM_DROPOFF_GARAGE 25
#define DONALD_LOVES_STASH_GARBAGE 26

#define KEY_ONFOOT_LOOKBEHIND 1
#define KEY_ONFOOT_FIRE 4
#define KEY_ONFOOT_SPRINT 8
#define KEY_ONFOOT_ENTERVEHICLE 16
#define KEY_ONFOOT_JUMP 32
#define KEY_ONFOOT_RIGHT 64
#define KEY_ONFOOT_LEFT 128
#define KEY_ONFOOT_BACKWARD 256
#define KEY_ONFOOT_FORWARD 512
#define KEY_ONFOOT_AIM 1024
#define KEY_INCAR_HORN 2
#define KEY_INCAR_FIRE 4
#define KEY_INCAR_FORWARD 8
#define KEY_INCAR_EXITVEHICLE 16
#define KEY_INCAR_BACKWARD 32
#define KEY_INCAR_RIGHT 64
#define KEY_INCAR_LEFT 128
#define KEY_INCAR_HANDBRAKE 1024
#define KEY_INCAR_RADIO 2048
#define KEY_INCAR_LOOKRIGHT 4096
#define KEY_INCAR_LOOKLEFT 8192

#define JOINFAIL_DUPNICK 0
#define JOINFAIL_VER 1
#define JOINFAIL_GAME 2

#define MARKER_TYPE_BOTH 0
#define MARKER_TYPE_PLAYER 1
#define MARKER_TYPE_VEHICLE 2

#define INVALID_PLAYER_ID 255
#define INVALID_TEAM_ID 255
#define INVALID_TRAIN_ID 255
#define SHARED_VIRTUAL_WORLD 255

#define PARTREASON_DISCONNECTED 0
#define PARTREASON_TIMEOUT 1
#define PARTREASON_KICKED 2
#define PARTREASON_BANNED 3

#define BLIP_NONE 0
#define BLIP_ASUKA 1
#define BLIP_8BALL 2
#define BLIP_CAT 3
#define BLIP_CENTRE 4
#define BLIP_COPCAR 5
#define BLIP_DONALD 6
#define BLIP_EIGHT 7
#define BLIP_BLUEPHONE 8
#define BLIP_REDPHONE 9
#define BLIP_JOEY 10
#define BLIP_KENJI 11
#define BLIP_GREENPHONE 12
#define BLIP_LUIGI 13
#define BLIP_NORTH 14
#define BLIP_RAY 15
#define BLIP_SAL 16
#define BLIP_HOME 17
#define BLIP_PNS 18
#define BLIP_TONY 19
#define BLIP_AMMU 20

#define BLIPTYPE_NONE 0
#define BLIPTYPE_ARROWONLY 1
#define BLIPTYPE_BLIPONLY 2
#define BLIPTYPE_BLIPWITHARROW 3

#define SURFACE_RUBBER_RUBBER 0
#define SURFACE_HARD_RUBBER 5
#define SURFACE_HARD_HARD 6
#define SURFACE_ROAD_RUBBER 10
#define SURFACE_ROAD_HARD 11
#define SURFACE_ROAD_ROAD 12
#define SURFACE_LOOSE_RUBBER 15
#define SURFACE_LOOSE_HARD 16
#define SURFACE_LOOSE_ROAD 17
#define SURFACE_LOOSE_LOOSE 18
#define SURFACE_WET_RUBBER 20
#define SURFACE_WET_HARD 21
#define SURFACE_WET_ROAD 22
#define SURFACE_WET_LOOSE 23
#define SURFACE_WET_WET 24

#define VEHADDON_NONE 0
#define VEHADDON_HOSE 1
#define VEHADDON_CANNON 2
#define VEHADDON_BOATCANNON 4

#define DOOR_DRIVER 15
#define DOOR_DRIVERREAR 16
#define DOOR_PASSENGER 11
#define DOOR_PASSENGERREAR 12

#define HANDLING_MASS 0
#define HANDLING_DIMENSIONS 1
#define HANDLING_CENTREOFMASS 2
#define HANDLING_PERCENTSUBMERGED 3
#define HANDLING_TRACTIONMULTIPLIER 4
#define HANDLING_TRANSMISSION 5
#define HANDLING_DRIVETYPE 6
#define HANDLING_ENGINETYPE 7
#define HANDLING_NUMBEROFGEARS 8
#define HANDLING_ENGINEACCELERATION 9
#define HANDLING_MAXVELOCITY 10
#define HANDLING_BRAKEDECELERATION 11
#define HANDLING_BRAKEBIAS 12
#define HANDLING_ABS 13
#define HANDLING_STEERINGLOCK 14
#define HANDLING_TRACTIONLOSS 15
#define HANDLING_TRACTIONBIAS 16
#define HANDLING_SUSPENSIONFORCELEVEL 17
#define HANDLING_SUSPENSIONDAMPINGLEVEL 18
#define HANDLING_SUSPENSIONUPPERLIMIT 19
#define HANDLING_SUSPENSIONLOWERLIMIT 20
#define HANDLING_SUSPENSIONBIAS 21
#define HANDLING_COLLISIONDAMAGEMULTIPLIER 22
#define HANDLING_FLAGS 23
#define HANDLING_SEATOFFSETDISTANCE 24
#define HANDLING_MONETARYVALUE 25
#define HANDLING_FRONTLIGHTS 26
#define HANDLING_REARLIGHTS 27

#define LIGHTSTATE_AUTO 0
#define LIGHTSTATE_OFF 1
#define LIGHTSTATE_ON 2

#define VEH_LANDSTALKER 90
#define VEH_IDAHO 91
#define VEH_STINGER 92
#define VEH_LINERUNNER 93
#define VEH_PERENNIAL 94
#define VEH_PERENIAL 94 // Oh, wiki
#define VEH_SENTINEL 95
#define VEH_PATRIOT 96
#define VEH_FIRETRUCK 97
#define VEH_TRASHMASTER 98
#define VEH_STRETCH 99
#define VEH_MANANA 100
#define VEH_INFERNUS 101
#define VEH_BLISTA 102
#define VEH_PONY 103
#define VEH_MULE 104
#define VEH_CHEETAH 105
#define VEH_AMBULANCE 106
#define VEH_FBICAR 107
#define VEH_MOONBEAM 108
#define VEH_ESPERANTO 109
#define VEH_TAXI 110
#define VEH_KURUMA 111
#define VEH_BOBCAT 112
#define VEH_MRWHOOPEE 113
#define VEH_BFINJECTION 114
#define VEH_CORPSE 115
#define VEH_POLICE 116
#define VEH_ENFORCER 117
#define VEH_SECURICAR 118
#define VEH_BANSHEE 119
#define VEH_PREDATOR 120
#define VEH_BUS 121
#define VEH_RHINO 122
#define VEH_BARRACKS 123
#define VEH_TRAIN 124
#define VEH_CHOPPER 125
#define VEH_DODO 126
#define VEH_COACH 127
#define VEH_CABBIE 128
#define VEH_STALLION 129
#define VEH_RUMPO 130
#define VEH_RCBANDIT 131
#define VEH_BELLYUP 132
#define VEH_MRWONGS 133
#define VEH_MAFIASENTINEL 134
#define VEH_YARDIELOBO 135
#define VEH_YAKUZA 136
#define VEH_DIABLOS 137
#define VEH_COLUMBIAN 138
#define VEH_HOODS 139
#define VEH_AIRTRAIN 140
#define VEH_DEADDODO 141
#define VEH_SPEEDER 142
#define VEH_REEFER 143
#define VEH_PANLANTIC 144
#define VEH_FLATBED 145
#define VEH_YANKEE 146
#define VEH_ESCAPE 147
#define VEH_BORGNINE 148
#define VEH_TOYZ 149
#define VEH_GHOST 150

#define WHEEL_FRONTLEFT 0
#define WHEEL_REARLEFT 1
#define WHEEL_FRONTRIGHT 2
#define WHEEL_REARRIGHT 3

#define WHEELSTATUS_OK 0
#define WHEELSTATUS_FLAT 1
#define WHEELSTATUS_FUCKED 2

#define WEP_FIST 0
#define WEP_BAT 1
#define WEP_COLT45 2
#define WEP_UZI 3
#define WEP_SHOTGUN 4
#define WEP_AK47 5
#define WEP_M16 6
#define WEP_SNIPER 7
#define WEP_ROCKETLAUNCHER 8
#define WEP_FLAMETHROWER 9
#define WEP_MOLOTOV 10
#define WEP_GRENADE 11
#define WEP_BOMB 12

#define WEP_VEHICLE 16
#define WEP_CAR 16
#define WEP_EXPLOSION 18
#define WEP_EXPLODE 18
#define WEP_DROWNED 20
#define WEP_DROWN 20
#define WEP_FALL 21
#define WEP_FELL 21

#define DEATH_VEHICLE 16
#define DEATH_EXPLOSION 18
#define DEATH_DROWNED 20
#define DEATH_CAR 16
#define DEATH_EXPLODE 18
#define DEATH_DROWN 20
#define DEATH_FALL 21
#define DEATH_FELL 21

#define WEAPONINFO_FIRETYPE 1
#define WEAPONINFO_FIRERATE 2
#define WEAPONINFO_RELOAD 3
#define WEAPONINFO_CLIPAMMO 4
#define WEAPONINFO_DAMAGE 5
#define WEAPONINFO_FLAGS 6
#define WEAPONINFO_RANGE 7
#define WEAPONINFO_SPEED 8
#define WEAPONINFO_RADIUS 9
#define WEAPONINFO_LIFESPAN 10
#define WEAPONINFO_SPREAD 11
#define WEAPONINFO_FIREOFFSET 12
#define WEAPONINFO_MODELID 13

#define WEAPONSTATE_IDLE 0
#define WEAPONSTATE_FIRING 1
#define WEAPONSTATE_RELOADING 2

// LU script classes
typedef void* Player;
typedef void* Vehicle;
typedef void* Object;
typedef void* Pickup;
typedef void* Checkpoint;
typedef void* Sphere;
typedef void* Blip;
typedef void* SpawnClass;
typedef void* Sound;
typedef void* HashTable;
typedef void* Sound;

typedef struct
{
	unsigned char r;
	unsigned char g;
	unsigned char b;
} Colour;

typedef struct
{
	float x;
	float y;
	float z;
} Vector3;

typedef struct
{
	float x;
	float y;
} Vector2;

#endif
